//
//  HD_NKM_Mediator.h
//  HDWuDaDaoServiceCenter
//
//  Created by HDNiuKuiming on 2017/5/12.
//  Copyright © 2017年 HDNiuKuiming. All rights reserved.
//

/*
 版本：V1.0
 开发者：NKM
 更新时间：2017-05-11
 功能描述：基于蓝牙功能实现单点和连续定位的功能，使用单利初始化，在整个项目运行期间，蓝牙不关闭，不使用后台定位功能，
 （1）对于单点定位，默认是隔一复收，使用管道模型两次获取到同一个号码以后，认为是获取到了一个稳定的蓝牙号；
 （2）对于连续定位，目前的优频引擎支持最多上传5组蓝牙号，取排序后每组蓝牙的前五个，如果不够五个，有几个传几个；
 （3）蓝牙初始化时候默认支持五种UUID，见APLDefaults.m代码，这组代码默认是不需要修改的；
 （4）连续定位平滑动画效果原理：假如接口每2秒上传一次连续定位的请求，那么将连续定位图标位置移动动画的时长设置成2秒，这样在动画结束后，刚好请求，执行下一次的平移动画，让用户感觉不到中间的跳动过程；成都连续定位如果是1秒钟上传一次，连续定位的点太飘；目前使用的是2秒上传一次请求；
 
 */
/*
 初始化：
 HD_NKM_Mediator *beaconLoc = [HD_NKM_Mediator shareInstance];
 NSArray *vcArray = @[@"HDMapVC"]; // 设定触发的Viewcontroller，必须设定，不设定不会触发
 [beaconLoc initValideVCList:vcArray];
 [beaconLoc startRangingAllRegions]; // 开始扫描
 根据需要去修改ThreshHold_Dis控制触发的距离；
 */
#import <Foundation/Foundation.h>
#import <CoreLocation/CoreLocation.h>
#import "APLDefaults.h"
#import <UIKit/UIKit.h>

typedef enum{
    kSuccessive_Type_Unknown,
    kSuccessive_Type_Per_1_Sec,
    kSuccessive_Type_Per_2_Sec,
}successiveType;

@interface HD_NKM_Mediator : NSObject<CLLocationManagerDelegate>
{
    BOOL      succussive;  // 是否两秒获取一次连续定位数据
    
    CGFloat   ThreshHold_Dis;         // 阈值距离，默认10.0f，不同楼层需要重新设定
    CGFloat   No_Beacon_Last_Time;    // 连续多久收不到蓝牙号，默认300s，收不到，说明已经不在展厅，
    CGFloat   Max_Successive_Distance;// 阈值距离，默认10.0f，不同楼层需要重新设定
    NSInteger Gather_Data_Cnt;        // 设定蓝牙管道模型的算法收集数据次数，默认2组，无需修改
    NSInteger iBeacon_Num_Max;        // 设定蓝牙最大号，默认是65535，无需修改
    NSInteger iBeacon_Num_Min;        // 设定蓝牙最小号，默认是1，无需修改
    
    CGFloat   maxBeaconDis;           // 设定蓝牙的距离阈值
    NSInteger succussiveBeaconCount;  // 设定连续定位上传的蓝牙个数
    
    successiveType nowSuccessiveType; // 连续定位数据几秒钟上传一次数据，有1s和2s两种，默认是1s
    
    @private
    BOOL successSwitch;     // 两秒钟上传一次连续定位位置的开关变量
}
@property (nonatomic, strong, readonly) NSString *nowVCString; // 当前的controller，在didAppear和willDiaAppear中设定一下，



+ (id)shareInstance; // 初始化，项目中一次初始化以后，不再释放，
+ (void)setNowVCDescription:(NSString *)VCStr;
- (void)initValideVCList:(NSArray *)vcClassArray; // 需要接受蓝牙号的Controllser列表

- (void)startRangingAllRegions; // 开始扫描
- (void)stopRangingAllRegions;  // 停止扫描
- (void)cleanPlayNum;

@end
